
	
	Ext.Loader.setConfig({enabled: true});
	Ext.Loader.setPath('Ext.ux', '/static/pdm/extjs/ux');	
	
	Ext.require([
    'Ext.grid.*',
    'Ext.data.*',
    'Ext.ux.grid.FiltersFeature',
    'Ext.panel.*'
	]);
	
	Ext.onReady(function(){
	
	 /* donde se administra los permisos*/
		Ext.Ajax.request({
			url: '/usuario/rol/permiso',
			params : {
			solicitud_permisos : 'interfaz_proyecto_bm_adm'
			},
			scope : this,
			success : function(response){
				info = Ext.decode(response.responseText);
				//        Ext.Msg.alert(':D',info.permiso['crear']);
				if (info.success === false){
				  Ext.Msg.alert('ERROR','No se pudo optener los permisos');
				}else{
					if (info.permiso['administrar']==0)
						Ext.getCmp('administrar').hide();

					if (info.permiso['eliminar']==0)
						Ext.getCmp('eliminar').hide();

					if (info.permiso['modificar']==0)
						Ext.getCmp('modificar').hide();
				}
			}
		}); /* fin de la funcion ajax que hace la peticion de los permisos*/
	
	
		Ext.define('Proyecto', {
		    extend: 'Ext.data.Model',
		    fields: [
				{name: 'id_proyecto',  type: 'int'},
				{name: 'nombre',   type: 'string'},
				{name: 'descripcion',   type: 'string'},					
		    ]
		    
		    
		});
		var store = Ext.create('Ext.data.JsonStore', {
		    model: 'Proyecto',
		    proxy: {
		        type: 'ajax',
		        url: '/proyecto/listar',
		        reader: {
		            type: 'json',
		            root: 'proyectos'
		        }
		    }
		});
    	store.load();
    
    
	   /* configuraciones para realizar el filtrado por columna*/
	   	var local = true;
	 	var filters = {
			ftype: 'filters',
			local: local
    	};
    
		var grid = Ext.create('Ext.grid.Panel', {
		    width:642,
		    height:500,
		    features: [filters],
		    collapsible:false,
		    title:'Lista de Proyectos',
		    renderTo: 'acciones',
			closable:true,
		    store: store,
		    multiSelect: true,
		    viewConfig: {
		        emptyText: 'No images to display'
		    },

		    columns: [{
		            text: 'ID',
		            width: 40,
		            sortable: true,
		            dataIndex: 'id_proyecto',
		            filterable: true,
		        },{
		            header: 'Nombre',
		            flex: 1,
		            sortable: true,
		            dataIndex: 'nombre',
		            filterable: true,
		            field: {
		                type: 'textfield'
		            }
		        },{
		            header: 'Descripcion',
		            flex: 1,
		            sortable: true,
		            dataIndex: 'descripcion',
		            filterable: true,
		            field: {
		                type: 'textfield'
		            }
		        }], 
		        

		        dockedItems: [{
		        xtype: 'toolbar',
		        items: [{
			        itemId: 'modificar',
			        id: 'modificar',
		            text: 'Modificar',
		            disabled: true,
		            handler: function(){				
		            var registro = grid.getView().getSelectionModel().getSelection()[0];
		            
		            var form_modificar = Ext.create('Ext.form.Panel', {
						frame:true,
						bodyStyle:'padding:5px 5px 0',
						width: 350,
						fieldDefaults: {
							msgTarget: 'side',
							labelWidth: 75
						},
						defaultType: 'textfield',
						defaults: {
							anchor: '100%'
						},

						items: [{
							fieldLabel: 'Nombre',
							name: 'nombre',
							value: registro.data['nombre'],
							allowBlank:false
						},{
							fieldLabel: 'Descripcion',
							value: registro.data['descripcion'],
							name: 'descripcion'
						}],

						buttons: [{
							text: 'Guardar',
							handler: function() {
								form_modificar.getForm().submit({
								url: "/proyecto/modificar",
								params: {
									submit: "submit",
									id_proyecto:registro.data['id_proyecto']
								},
								method: "post",
								waitTitle:'Conectando', 
								waitMsg:'Enviando datos...',
								success: function() {							
									Ext.Msg.alert(":D", "El proyecto fue modificado con exito");
									grid.store.load();
								},
								failure: function() {
									Ext.Msg.alert(":(", "No se pudo almacenar el proyecto");
								}	
							})
							
							}
						},{
							text: 'Cancelar',
							handler: function() {
					            this.up('form').getForm().reset();
					            this.up('window').hide();
					        }
						
						}]
					});

					Ext.create('Ext.window.Window', {
						title: 'Modifica Proyecto',
						plain:true,
						resizable: true,
			            modal: true,
						height: 200,
						width: 400,
						layout: 'fit',
						items: form_modificar,
					}).show();

		            }
		        }, '-', {
		            itemId: 'eliminar',
		            id:'eliminar',
		            text: 'Eliminar',
		            disabled: true,
		            handler: function(){
		                var selection = grid.getView().getSelectionModel().getSelection()[0];
		                if (selection) {
		                  	var id_proyecto = grid.getView().getSelectionModel().getSelection()[0].data['id_proyecto'];	
		        
							Ext.Msg.confirm('Eliminar', 'Desea eliminar el proyecto?', function(btn){
							
								if(btn == 'yes') {
								
									Ext.Ajax.request({
										url: '/proyecto/eliminar',
										params: {
											id_proyecto: id_proyecto
										},
										success: function() {
											Ext.Msg.alert(':D', 'Ha eliminado el proyecto', function(btn){
												grid.store.load();
											
											})
										},
										failure: function() {
											Ext.Msg.alert(':(', 'No se pudo eliminar el proyecto')
										}
									})
								}											
							})   

		                }
		            }
		        },'-',{
	            	itemId: 'administrar',
		        	id:'administrar',
		            text: 'Administrar',
		            disabled: true,
		            handler: function(){
		            	
		            }/*fin de la funcion administrar*/
		        }],
		        
		        listeners:{            	
		        }
		    }],            
		        
		});
    
		grid.getSelectionModel().on('selectionchange', function(selModel, selections){
		    grid.down('#eliminar').setDisabled(selections.length === 0);
		    grid.down('#modificar').setDisabled(selections.length === 0);
   		    grid.down('#administrar').setDisabled(selections.length === 0);
		});

	});
	

